package presentation;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import metier.ClientManager;
import metier.UtilisateurManager;
import modele.Utilisateur;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import utils.Utilitaire;


/**
 * Controller - Spring
 * 
 * @author Loiane Groner
 * http://loianegroner.com (English)
 * http://loiane.com (Portuguese)
 */
@Controller
public class ClientController  {
	
	@RequestMapping(value="/clients/viewAll.action")
	public @ResponseBody Map<String,? extends Object> viewAllClient(Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ClientManager.getAllClients();
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/clients/view.action")
	public @ResponseBody Map<String,? extends Object> viewClient(@RequestParam("start") int start, @RequestParam("limit") int limit,Model model,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List data	=	ClientManager.getClients(start,limit);
				int total=data.size();
				return Utilitaire.getMap(data,1);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	@RequestMapping(value="/clients/create.action")
	public @ResponseBody Map<String,? extends Object> create(@RequestParam Object data,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List d	=	ClientManager.ajouterClients(data);
				int total=d.size();
				return Utilitaire.getMap(d,total);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/clients/update.action")
	public @ResponseBody Map<String,? extends Object> update(@RequestParam Object data,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				List d	=	ClientManager.modfierClients(data);
				int total=d.size();
				return Utilitaire.getMap(d,total);
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
	
	@RequestMapping(value="/clients/delete.action")
	public @ResponseBody Map<String,? extends Object> delete(@RequestParam Object data,HttpSession session) throws Exception {
		try{
			String sesUser=(String) session.getAttribute("sessionMERP");
			int idUser	=Integer.parseInt((String) (session.getAttribute("sessionIdMERP")==null?"0":session.getAttribute("sessionIdMERP")));
			Utilisateur u=UtilisateurManager.getUserBySession(sesUser,idUser);
			if(u!= null)
			{
				if (ClientManager.supprimerClients(data))
					return Utilitaire.getMap("Les objets sont supprimer");
				else
					return Utilitaire.getModelMapError("Erreur de suppression");
			}
			else
				return Utilitaire.getModelMapError("Merci de vous identifier");
		} catch (Exception e) {
			return Utilitaire.getModelMapError("Error retrieving from database : "+ e.getMessage());
		}
	}
}
